From 542143d701e5dd09800bbe88498d626c9356c6fc Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 8 Apr 1993 07:10:42 +0000 Subject: [PATCH] (Fkill_all_local_variables): Store each var's current value in the buffer's alist entry, before reverting to the default value. --- src/buffer.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/buffer.c b/src/buffer.c index 118519f36ff..e927a27088c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1149,8 +1149,16 @@ a non-nil `permanent-local' property are not eliminated by this function.") Set it up for the current buffer with the default value. */ tem = XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->cdr; + /* Store the symbol's current value into the alist entry + it is currently set up for. This is so that, if the + local is marked permanent, and we make it local again below, + we don't lose the value. */ + XCONS (XCONS (tem)->car)->cdr = XCONS (XSYMBOL (sym)->value)->car; + /* Switch to the symbol's default-value alist entry. */ XCONS (tem)->car = tem; + /* Mark it as current for the current buffer. */ XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Fcurrent_buffer (); + /* Store the current value into any forwarding in the symbol. */ store_symval_forwarding (sym, XCONS (XSYMBOL (sym)->value)->car, XCONS (tem)->cdr); } -- 2.30.2